package orderOpe;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import common.Customer;

public class CustomerListServlet extends HttpServlet {
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		perform(req,resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		perform(req,resp);
	}
	
	private void perform(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
		resp.setContentType("text/html;charset=UTF-8");
		req.setCharacterEncoding("UTF-8");
	
		String code = null;
		//顧客コード受取
		code = req.getParameter("code");
	
		String name = null;
		String address = null;
		String tel = null;
		
		//名前受け取り
		name = req.getParameter("name");
		//住所受け取り
		address = req.getParameter("address");
		//電話番号受け取り
		tel = req.getParameter("tel");
		//エラーメッセー
		StringBuffer msg = new StringBuffer();;
		//listの作成
		List<Customer> list = new ArrayList<Customer>();
		
		//顧客のセッション情報をクリア
		HttpSession session = req.getSession();
		session.removeAttribute("customer");
		
		//②パラメータをチェックする
		if(code == null || code.length() == 0){
			
			if((name == null || name.length() == 0) && (address == null || address.length() == 0) && (tel == null || tel.length() == 0)){
				msg.append("検索条件を入力してください。<br>");
			}
		}
			
		
			//空の顧客オブジェクト用意 
		    Customer customer = null;
		    	//顧客コード検索
				//③-1顧客コード検索の場合はCustomer find_by_code(String code)で
				//戻り値をオブジェクトで受け取り、getterで値を受け取りList形式にする。
			if(code !=null && code.length() != 0){
				customer = Customer.find_by_code(code);
				if(customer == null){
					 msg.append("この顧客コードは登録されていません。<br>");
				}
				
				if(customer != null){
					 list.add(customer);
				}
			}
			
			 
			
		
			//③-2 氏名、住所、電話番号検索の場合は、
			//List<Customer>find_by(String name, String address, String tel)
			//メソッドを呼び、Listで戻り値を受け取る。
			if(code==null || code.length()==0){
				list= Customer.find_by(name,address,tel);
				
				if(list == null){
					msg.append("該当する顧客はいません。<br>");
				}
			}
			
			//④List形式の戻り値をsetAttributeでcustomerList.jspに値を渡す。
			if(msg.length()==0){
				
				req.setAttribute("list", list);
				RequestDispatcher dispatcher = req.getRequestDispatcher("/operator/customerList.jsp");
				dispatcher.forward(req, resp);
			}
			//エラーメッセージをsetAttributeでtelOrder.jspに送る。
			else{
				req.setAttribute("msg", msg.toString());
				RequestDispatcher dispatcher = req.getRequestDispatcher("/operator/telOrder.jsp");
				dispatcher.forward(req, resp);
				
			}
		
		
	 }
}
